RAIS  3.2
C:/Projekte/RAIS/Specific Masks/EditDataRoles_New.aspx.cs
Go to the documentation of this file.
00001 
00028 using System;
00029 using System.Data;
00030 using System.Configuration;
00031 using System.Collections;
00032 using System.Collections.Generic;
00033 using System.Web;
00034 using System.Web.Security;
00035 using System.Web.UI;
00036 using System.Web.UI.WebControls;
00037 using System.Web.UI.WebControls.WebParts;
00038 using System.Web.UI.HtmlControls;
00039 
00040 using RAIS;
00041 using RAIS.Common.UserManagement;
00042 //using RAIS.ApplicationLogicLayer;
00043 
00044 using DataRoles = System.Collections.Generic.Dictionary<string, RAIS.Common.UserManagement.DataRole>;
00045 using DataRoleAttributes = System.Collections.Generic.Dictionary<string, RAIS.Common.UserManagement.DataRoleAttribute>;
00046 using Regions = System.Collections.Generic.Dictionary<string, RAIS.Common.UserManagement.Region>;
00047 using Districts = System.Collections.Generic.Dictionary<string, RAIS.Common.UserManagement.District>;
00048 using Facilities = System.Collections.Generic.Dictionary<string, RAIS.Common.UserManagement.Facility>;
00049 
00050 namespace RAIS.UI.SpecificMasks
00051 {
00055     public partial class EditDataRoles_New : System.Web.UI.Page
00056     {
00060         enum EditDataRoles_PageMode
00061         {
00062             viewRoles,
00063             addRole,
00064             editRole
00065         };
00066         #region Event handlers
00067         protected void Page_PreLoad(object sender, EventArgs e)
00068         {
00069             RAIS.UI.Common.PageManagement.TrimTextBoxValues(this);
00070         }
00081         protected void Page_Load(object sender, EventArgs e)
00082         {
00083                         this.Response.Cache.SetNoStore();
00084                         if (this.CurrentUser == null)
00085                 UI.Common.AccessManagement.SignOut(this);
00086 
00087             if (!this.IsPostBack)
00088             {
00089                 this.BTNdmdelete.Attributes.Add("onclick", string.Format("javascript: return confirm('{0}');", RAIS.Common.Messages.DELETE_QUESTION_DATA_ROLE.Replace("'", "\\'")));
00090                 UI.Common.UserManagement.InitializeDataRoles(this);
00091             }
00092 
00093             this.InitializeControls();
00094             this.EnableRemoveButton();
00095 
00096             this.LBLresult.Text = "";
00097 
00098             if (!this.IsPostBack)
00099             {
00100                 this.LBLusername.Text = this.CurrentUser.Name;
00101                 this.CurrentEditDataRoles_PageMode = EditDataRoles_PageMode.viewRoles;
00102                 this.ShowRole();
00103                 UI.Common.PageManagement.InitializePage(this, this.TreeView1);
00104 //                              this.LBTNmessagebox.Visible = !(this.CurrentUser.FunctionalRole.Type == FunctionRole.FunctionRoleType.Guest);
00105                         }
00106         }
00107         protected void Page_Init(object sender, EventArgs e)
00108         {
00109             //Common.PageManagement.SetScrolableListBox(LBdmrolename, this, true);
00110             Common.PageManagement.SetScrolableListBox(LBdm, this, true);
00111         }
00118         protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
00119         {
00120             UI.Common.UserManagement.ProcessTreeViewOnRedirect(this.TreeView1);
00121         }
00128         protected void LBTNlogout_Click(object sender, EventArgs e)
00129         {
00130             UI.Common.AccessManagement.SignOut(this);
00131         }
00132 
00141         protected void LBdmrolename_SelectedIndexChanged(object sender, EventArgs e)
00142         {
00143             this.EnableDisableEditDelete();
00144             this.ShowRole();
00145         }
00152         protected void BTNadd_Click(object sender, EventArgs e)
00153         {
00154             this.ClearRoleData();
00155             this.CreateTemperaryRole();
00156             this.Modified = true;
00157             this.CurrentEditDataRoles_PageMode = EditDataRoles_PageMode.addRole;
00158         }
00166         protected void BTNedit_Click(object sender, EventArgs e)
00167         {
00168             this.CurrentEditDataRoles_PageMode = EditDataRoles_PageMode.editRole;
00169             this.EnableRemoveButton();
00170         }
00177         protected void BTNdelete_Click(object sender, EventArgs e)
00178         {
00179             this.DeleteSelectedRole();
00180             this.EnableDisableEditDelete();
00181             this.ShowRole();
00182         }
00190         protected void BTNsave_Click(object sender, EventArgs e)
00191         {
00192             if (this.CurrentEditDataRoles_PageMode == EditDataRoles_PageMode.addRole)
00193                 this.AddNewRole();
00194             else
00195                 this.SaveRole();
00196             this.EnableDisableEditDelete();
00197         }
00205         protected void BTNdiscard_Click(object sender, EventArgs e)
00206         {
00207             this.ClearRoleData();
00208             this.EnableRemoveButton();
00209             this.ShowRole();
00210 
00211             this.CurrentEditDataRoles_PageMode = EditDataRoles_PageMode.viewRoles;
00212             this.Modified = false;
00213 
00214             this.InitializeControls();
00215             this.EnableDisableControls();
00216         }
00223         protected void BTNfmadd_Click(object sender, EventArgs e)
00224         {
00225             this.AddDataRoleAttribute();
00226             this.InitializeControls();
00227             this.EnableRemoveButton();
00228         }
00236         protected void BTNfmremove_Click(object sender, EventArgs e)
00237         {
00238             this.RemoveDataRoleAttribute();
00239             this.InitializeControls();
00240             this.EnableRemoveButton();
00241         }
00242         #endregion
00243         #region Private helper methods
00244 
00247         private void CreateTemperaryRole()
00248         {
00249             DataRole tempRole = new DataRole();
00250             this.Session[UI.Common.Constants.DATA_ROLE_TEMPORARY_TAG] = tempRole;
00251         }
00258         void ShowRole()
00259         {
00260             if (this.SelectedRole == null)
00261             {
00262                 ClearRoleData();
00263                 return;
00264             }
00265             else
00266             {
00267                 this.TXTrolename.Text = this.SelectedRole.Name;
00268                 UI.Common.UserManagement.InitializeDataRoleAttributesList(this.LBdm, this.SelectedRole);
00269             }
00270         }
00274         void ClearRoleData()
00275         {
00276             this.TXTrolename.Text = "";
00277             this.LBdm.Items.Clear();
00278             this.DDLdmdistrict.SelectedIndex = 0;
00279             this.DDLdmregion.SelectedIndex = 0;
00280             this.DDLdmfacility.SelectedIndex = 0;
00281         }
00285         private void RemoveDataRoleAttribute()
00286         {
00287             DataRole selectedRole = this.SelectedRole;
00288             if (selectedRole != null)
00289             {
00290                 DataRoleAttribute attribute = this.SelectedRoleAttribute;
00291                 try
00292                 {
00293                     this.InitializeControls();
00294                     this.SetRegionSelection(attribute);
00295                     this.SetDistrictSelection(attribute);
00296                     this.SetFacilitySelection(attribute);
00297                 }
00298                 catch
00299                 {
00300                 }
00301 
00302                 string returnMessage = RAIS.Common.Messages.MODIFICATION_PRESS_SAVE;
00303                 bool success = selectedRole.RemoveAttribute(attribute, ref returnMessage);
00304                 this.EnableDisableControls();
00305 
00306                 RAIS.UI.Common.MessageDisplay.DisplayReturnMessage(this.LBLresult, returnMessage, success);
00307             }
00308         }
00312         private void AddDataRoleAttribute()
00313         {
00314             DataRole selectedRole = this.SelectedRole;
00315             if (selectedRole != null)
00316             {
00317                 DataRoleAttribute dataRoleAttribute = new DataRoleAttribute();
00318                 dataRoleAttribute.Region = this.SelectedRegion;
00319                 dataRoleAttribute.District = this.SelectedDistrict;
00320                 dataRoleAttribute.Facility = this.SelectedFacility;
00321 
00322                 string returnMessage = RAIS.Common.Messages.MODIFICATION_PRESS_SAVE;
00323                 bool bSuccess = this.ValidateNewDataRoleAttribute(dataRoleAttribute, ref returnMessage);
00324                 if (bSuccess)
00325                 {
00326                     selectedRole.AddAttribute(dataRoleAttribute, ref returnMessage);
00327                     this.EnableDisableControls();
00328                     UI.Common.UserManagement.InitializeDataRoleAttributesList(this.LBdm, selectedRole);
00329                     this.LBdm.SelectedValue = dataRoleAttribute.ToString();
00330                 }
00331                 RAIS.UI.Common.MessageDisplay.DisplayReturnMessage(this.LBLresult,
00332                                                                    returnMessage,
00333                                                                    bSuccess);
00334             }
00335         }
00339         private void AddNewRole()
00340         {
00341             string validationMessage = RAIS.Common.Messages.MODIFICATION_PRESS_SAVE;
00342             bool success = this.ValidateNewDataRole(this.TXTrolename.Text, ref validationMessage);
00343             if (success)
00344             {
00345                 success = ApplicationLogicLayer.UserManagement.AddDataRole(this.TXTrolename.Text, ref validationMessage);
00346                 if (success)
00347                 {
00348                     DataRole tempRole = this.SelectedRole;
00349                     this.Session[RAIS.UI.Common.Constants.DATA_ROLE_TEMPORARY_TAG] = null;
00350                     UI.Common.UserManagement.InitializeDataRoles(this);
00351 
00352                     DataRoles dataRoles = (DataRoles)this.Session[RAIS.UI.Common.Constants.DATA_ROLES_TAG];
00353                     DataRole savedRole = dataRoles[this.TXTrolename.Text];
00354 
00355                     foreach (DataRoleAttribute attribute in tempRole.AddedAttributes.Values)
00356                     {
00357                         success = savedRole.AddAttribute(attribute, ref validationMessage);
00358                         if (!success)
00359                             break;
00360                     }
00361                     if (success)
00362                         success = ApplicationLogicLayer.UserManagement.SaveDataRole(savedRole, ref validationMessage);
00363                 }
00364 
00365                 if (success)
00366                 {
00367                     this.CurrentEditDataRoles_PageMode = EditDataRoles_PageMode.viewRoles;
00368                     this.Modified = false;
00369 
00370                     UI.Common.UserManagement.InitializeDataRolesListBox(this.LBdmrolename);
00371                     this.LBdmrolename.SelectedValue = this.TXTrolename.Text;
00372 
00373                     UI.Common.UserManagement.InitializeDataRoleAttributesList(this.LBdm, this.SelectedRole);
00374 
00375                     this.InitializeControls();
00376                     this.EnableDisableControls();
00377                 }
00378             }
00379             RAIS.UI.Common.MessageDisplay.DisplayReturnMessage(this.LBLresult, validationMessage, success);
00380         }
00384         private void DeleteSelectedRole()
00385         {
00386             DataRole selectedRole = this.SelectedRole;
00387 
00388             bool success = false;
00389             string returnMessage = RAIS.Common.Messages.MODIFICATION_PRESS_SAVE;
00390             if (selectedRole != null)
00391             {
00392                 success = ApplicationLogicLayer.UserManagement.RemoveDataRole(selectedRole, ref returnMessage);
00393                 if (success)
00394                 {
00395                     this.Session[RAIS.UI.Common.Constants.DATA_ROLES_TAG] = null; //for resetting
00396                     UI.Common.UserManagement.InitializeDataRolesListBox(this.LBdmrolename);
00397                 }
00398             }
00399             RAIS.UI.Common.MessageDisplay.DisplayReturnMessage( this.LBLresult,
00400                                                                 returnMessage,
00401                                                                 success);
00402         }
00407         private bool SaveRole()
00408         {
00409             string returnMessage = "";
00410             bool success = true;
00411 
00412             if (!this.Modified)
00413             {
00414                 returnMessage = RAIS.Common.Messages.DATA_ROLE_NO_MODIFICATION;
00415                 success = false;
00416             }
00417             else
00418             {
00419                 success = ApplicationLogicLayer.UserManagement.SaveDataRole(this.SelectedRole, ref returnMessage);
00420                 if (success)
00421                 {
00422                     this.CurrentEditDataRoles_PageMode = EditDataRoles_PageMode.viewRoles;
00423                     this.Modified = false;
00424 
00425                     this.InitializeControls();
00426                     this.EnableDisableControls();
00427                 }
00428             }
00429             RAIS.UI.Common.MessageDisplay.DisplayReturnMessage(this.LBLresult,
00430                                                                 returnMessage,
00431                                                                 success);
00432             return success;
00433         }
00442         bool ValidateNewDataRole(string dataRoleName, ref string returnMessage)
00443         {
00444             DataRoles dataRoles = (DataRoles)this.Session[UI.Common.Constants.DATA_ROLES_TAG];
00445             if (dataRoles.ContainsKey(dataRoleName))
00446             {
00447                 returnMessage = RAIS.Common.Messages.DATA_ROLE_EXISTS;
00448                 return false;
00449             }
00450             else
00451             if (dataRoleName.Length == 0)
00452             {
00453                 returnMessage = RAIS.Common.Messages.NAME_IS_EMTPY;
00454                 return false;
00455             }
00456             else
00457 
00458                 return true;
00459 
00460 
00461         }
00470         bool ValidateNewDataRoleAttribute(DataRoleAttribute newDataRoleAttributeName, ref string returnMessage)
00471         {
00472             DataRole dataRole = this.SelectedRole;
00473             if (dataRole == null)
00474             {
00475                 returnMessage = RAIS.Common.Messages.DATA_ROLE_DOES_NOT_EXIST;
00476                 return false;
00477             }
00478             else
00479             {
00480                 return dataRole.ValidateNewAttribute(newDataRoleAttributeName, ref returnMessage);
00481             }
00482         }
00487         private bool ConfirmRoleDeletion()
00488         {
00489             return true;
00490         }
00494         private void EnableRemoveButton()
00495         {
00496             this.BTNdmremove.Enabled =  this.LBdm.Items.Count > 0 && 
00497                                         this.SelectedRole != null &&
00498                                         this.SelectedRole.Attributes.ContainsKey(this.LBdm.SelectedValue) &&
00499                                         this.CurrentEditDataRoles_PageMode != EditDataRoles_PageMode.viewRoles;
00500         }
00504         private void InitializeControls()
00505         {
00506             UI.Common.UserManagement.InitializeDataRolesListBox(this.LBdmrolename);
00507             UI.Common.UserManagement.InitializeRegionsList(this.DDLdmregion, this.SelectedRole);
00508 
00509             UI.Common.UserManagement.InitializeDistrictsList(this.DDLdmdistrict,
00510                                                              this.DDLdmregion.SelectedValue);
00511 
00512             UI.Common.UserManagement.InitializeFacilitiesList(this.DDLdmfacility,
00513                                                                 this.DDLdmregion.SelectedValue,
00514                                                                 this.DDLdmdistrict.SelectedValue);
00515 
00516             UI.Common.UserManagement.InitializeDataRoleAttributesList(this.LBdm,
00517                                                                       this.SelectedRole);
00518 
00519         }
00523         private void EnableDisableControls()
00524         {
00525             this.LBdm.Enabled = this.CurrentEditDataRoles_PageMode != EditDataRoles_PageMode.viewRoles;
00526 
00527             this.DDLdmregion.Enabled = this.CurrentEditDataRoles_PageMode != EditDataRoles_PageMode.viewRoles;
00528             this.DDLdmdistrict.Enabled = this.CurrentEditDataRoles_PageMode != EditDataRoles_PageMode.viewRoles;
00529             this.DDLdmfacility.Enabled = this.CurrentEditDataRoles_PageMode != EditDataRoles_PageMode.viewRoles;
00530 
00531             this.BTNdmadd.Enabled = this.CurrentEditDataRoles_PageMode != EditDataRoles_PageMode.viewRoles;
00532             this.BTNdmremove.Enabled = this.CurrentEditDataRoles_PageMode != EditDataRoles_PageMode.viewRoles;
00533 
00534             this.BTNadd.Enabled = this.CurrentEditDataRoles_PageMode == EditDataRoles_PageMode.viewRoles;
00535             this.BTNsave.Enabled = this.Modified;
00536             this.BTNdiscard.Enabled = this.CurrentEditDataRoles_PageMode != EditDataRoles_PageMode.viewRoles; ;
00537 
00538             this.LBdmrolename.Enabled = this.CurrentEditDataRoles_PageMode == EditDataRoles_PageMode.viewRoles;
00539             this.TXTrolename.Enabled = this.CurrentEditDataRoles_PageMode == EditDataRoles_PageMode.addRole;
00540 
00541             this.EnableDisableEditDelete();
00542 
00543             UI.Common.UserManagement.EnableCommonControls(this, this.CurrentEditDataRoles_PageMode == EditDataRoles_PageMode.viewRoles);
00544             this.LBLadmin.ForeColor = RAIS.UI.Common.Constants.COLOR_OF_MENU_BAR_TEXT_HIGHLIGHT;
00545 
00546             if (this.Modified)
00547                 this.BTNdiscard.Attributes.Add("onclick", string.Format("javascript: return confirm('{0}');", RAIS.Common.Messages.DISCARD_QUESTION_ROLE.Replace("'", "\\'")));
00548             else
00549                 this.BTNdiscard.Attributes.Remove("onclick");
00550         }
00554         void EnableDisableEditDelete()
00555         {
00556             this.BTNedit.Enabled = this.CurrentEditDataRoles_PageMode == EditDataRoles_PageMode.viewRoles && this.SelectedRole != null;
00557             this.BTNdmdelete.Enabled = this.CurrentEditDataRoles_PageMode == EditDataRoles_PageMode.viewRoles && this.SelectedRole != null;
00558         }
00564         private void SetRegionSelection(DataRoleAttribute roleAttribute)
00565         {
00566             if (roleAttribute != null)
00567             {
00568                 this.DDLdmregion.SelectedValue = roleAttribute.Region.Name;
00569             }
00570         }
00576         private void SetDistrictSelection(DataRoleAttribute roleAttribute)
00577         {
00578             if (roleAttribute != null)
00579             {
00580                 this.DDLdmdistrict.SelectedValue = roleAttribute.District.Name;
00581             }
00582         }
00588         private void SetFacilitySelection(DataRoleAttribute roleAttribute)
00589         {
00590             if (roleAttribute != null)
00591             {
00592                 this.DDLdmfacility.SelectedValue = roleAttribute.Facility.Name;
00593             }
00594         }
00595         #endregion
00596         #region Private properties
00597 
00600         private DataRole SelectedRole
00601         {
00602             get
00603             {
00604                 if (this.Session[RAIS.UI.Common.Constants.DATA_ROLE_TEMPORARY_TAG] != null)
00605                     return (DataRole)this.Session[RAIS.UI.Common.Constants.DATA_ROLE_TEMPORARY_TAG];
00606                 else
00607                 {
00608                     DataRoles dataRoles = (DataRoles)this.Session[UI.Common.Constants.DATA_ROLES_TAG];
00609                     if (dataRoles != null && dataRoles.ContainsKey(this.LBdmrolename.SelectedValue))
00610                         return dataRoles[this.LBdmrolename.SelectedValue];
00611                     else
00612                         return null;
00613                 }
00614             }
00615         }
00619         private Region SelectedRegion
00620         {
00621             get
00622             {
00623                 Regions regions = (Regions)this.Session[RAIS.UI.Common.Constants.REGIONS_TAG];
00624                 if (regions != null)
00625                     return regions[this.DDLdmregion.SelectedValue];
00626                 else
00627                     return null;
00628             }
00629         }
00633         private District SelectedDistrict
00634         {
00635             get
00636             {
00637                 Districts districts = ApplicationLogicLayer.UserManagement.GetDistrictsByRegion(this.SelectedRegion);
00638                 if (districts != null)
00639                     return districts[this.DDLdmdistrict.SelectedValue];
00640                 else
00641                     return null;
00642             }
00643         }
00647         private Facility SelectedFacility
00648         {
00649             get
00650             {
00651                 Region selectedRegion = this.SelectedRegion;
00652                 District selectedDistrict = this.SelectedDistrict;
00653                 Facilities facilities = ApplicationLogicLayer.UserManagement.GetFacilitiesByRegionAndDistrict(selectedRegion, selectedDistrict);
00654                 if (facilities != null)
00655                     return facilities[this.DDLdmfacility.SelectedValue];
00656                 else
00657                     return null;
00658             }
00659         }
00663         private DataRoleAttribute SelectedRoleAttribute
00664         {
00665             get
00666             {
00667                 DataRole selectedRole = this.SelectedRole;
00668                 if (selectedRole != null && selectedRole.Attributes.ContainsKey(this.LBdm.SelectedValue))
00669                     return selectedRole.Attributes[this.LBdm.SelectedValue];
00670                 else
00671                     return null;
00672             }
00673         }
00677         EditDataRoles_PageMode CurrentEditDataRoles_PageMode
00678         {
00679             get
00680             {
00681                 if (this.Session[UI.Common.Constants.DATA_ROLE_EDIT_MODE_TAG] != null)
00682                 {
00683                     return (EditDataRoles_PageMode)this.Session[UI.Common.Constants.DATA_ROLE_EDIT_MODE_TAG];
00684                 }
00685                 else
00686                     return EditDataRoles_PageMode.viewRoles;
00687             }
00688             set
00689             {
00690                 string message;
00691                 switch (value)
00692                 {
00693                     case EditDataRoles_PageMode.addRole: message = RAIS.UI.Common.Constants.ADDING_NEW_DATA_ROLE; break;
00694                     case EditDataRoles_PageMode.editRole: message = RAIS.UI.Common.Constants.EDITTING_EXISTING_DATA_ROLE; break;
00695 
00696                     default:
00697                         this.Session[RAIS.UI.Common.Constants.DATA_ROLE_TEMPORARY_TAG] = null;
00698                         message = "";
00699                         break;
00700                 }
00701                 RAIS.UI.Common.MessageDisplay.DisplayReturnMessage(this.LBLresult, message, true);
00702                 this.Session[UI.Common.Constants.DATA_ROLE_EDIT_MODE_TAG] = value;
00703                 this.EnableDisableControls();
00704             }
00705         }
00709         bool Modified
00710         {
00711             get
00712             {
00713                 if (this.SelectedRole != null)
00714                     return this.SelectedRole.Modified;
00715                 else
00716                     return false;
00717             }
00718             set
00719             {
00720                 if (this.SelectedRole != null)
00721                     this.SelectedRole.Modified = value;
00722 
00723                 if (!value)
00724                     this.Session[RAIS.UI.Common.Constants.DATA_ROLES_TAG] = null;
00725             }
00726         }
00730         protected UserData CurrentUser
00731         {
00732             get { return (UserData)this.Session[UI.Common.Constants.CURRENT_USER_TAG]; }
00733         }
00734         #endregion Properties
00735     }
00736 }